package InnerClass.Demo05;

/**
 * 如果接口的实现类（或者是父类的子类）只需要使用唯一的一次
 * 那么这种情况就可以省略该类的定义，而改为使用匿名内部类
 * 匿名内部类的定义格式
 * 接口名称 对象名 = new 接口名称（）｛
 *
 * //覆盖重写所有的抽象方法｝；
 * 堆new 接口名称（）格式分析：
 * 1.代表创建对象的动作
 * 2.接口名称就是匿名内部类需要实现那个接口
 * 3.｛。。。｝这才是匿名内部类的内容
 * 另外注意几点问题
 * 1.匿名内部类：在创建过程的时候铭，只能使用一次
 * 如果希望多次使用，而且类的内容一样的话，必须使用单独定义的实现类
 * 2.匿名对象；在调用方法的时候值调用一次
 * 如果希望同一个对象调用多次方法，那么必须给对象起个名字
 * 3.匿名内部类是省略实现类/子类名称，但是匿名对象是省略了对象名称
 * 强调：匿名内部类和匿名对象不是同一回事
 *
 */
public class DemoMain {
    public static void main(String[] args) {
//        InterFace interFace = new InterFace();
//        interFace.method();
        MyInterface obj = new MyInterface() {
            @Override
            public void method() {
                System.out.println("匿名内部类的重写方法");
            }
        };
        obj.method();
    }
}
